#!/bin/bash

# JD信贷数据生成系统 - JAR打包脚本
# 作者: 系统管理员
# 日期: $(date +%Y-%m-%d)

echo "=========================================="
echo "    JD信贷数据生成系统 - JAR打包脚本"
echo "=========================================="
echo ""

# 设置颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# 检查Maven是否安装
check_maven() {
    if command -v mvn &> /dev/null; then
        MAVEN_VERSION=$(mvn -version | head -n 1)
        echo -e "${GREEN}✓ Maven已安装: $MAVEN_VERSION${NC}"
        return 0
    else
        echo -e "${RED}✗ Maven未安装或不在PATH中${NC}"
        echo "请安装Maven或确保Maven在系统PATH中"
        return 1
    fi
}

# 检查Java是否安装
check_java() {
    if command -v java &> /dev/null; then
        JAVA_VERSION=$(java -version 2>&1 | head -n 1)
        echo -e "${GREEN}✓ Java已安装: $JAVA_VERSION${NC}"
        return 0
    else
        echo -e "${RED}✗ Java未安装或不在PATH中${NC}"
        echo "请安装Java JDK 17或更高版本"
        return 1
    fi
}

# 清理之前的构建
clean_build() {
    echo -e "${YELLOW}正在清理之前的构建文件...${NC}"
    mvn clean
    if [ $? -eq 0 ]; then
        echo -e "${GREEN}✓ 清理完成${NC}"
    else
        echo -e "${RED}✗ 清理失败${NC}"
        exit 1
    fi
}

# 编译和打包
build_jar() {
    echo -e "${YELLOW}正在编译和打包JAR文件...${NC}"
    echo "这可能需要几分钟时间，请耐心等待..."
    
    mvn package -DskipTests
    if [ $? -eq 0 ]; then
        echo -e "${GREEN}✓ JAR打包成功！${NC}"
        return 0
    else
        echo -e "${RED}✗ JAR打包失败${NC}"
        return 1
    fi
}

# 显示构建结果
show_results() {
    echo ""
    echo "=========================================="
    echo -e "${BLUE}           构建结果${NC}"
    echo "=========================================="
    
    JAR_FILE="target/jd_credit-1.0-SNAPSHOT.jar"
    ORIGINAL_JAR="target/jd_credit-1.0-SNAPSHOT.jar.original"
    
    if [ -f "$JAR_FILE" ]; then
        JAR_SIZE=$(ls -lh "$JAR_FILE" | awk '{print $5}')
        echo -e "${GREEN}✓ 可执行JAR文件: $JAR_FILE${NC}"
        echo -e "${GREEN}  文件大小: $JAR_SIZE${NC}"
    else
        echo -e "${RED}✗ JAR文件未找到${NC}"
    fi
    
    if [ -f "$ORIGINAL_JAR" ]; then
        ORIGINAL_SIZE=$(ls -lh "$ORIGINAL_JAR" | awk '{print $5}')
        echo -e "${BLUE}  原始JAR文件: $ORIGINAL_JAR${NC}"
        echo -e "${BLUE}  文件大小: $ORIGINAL_SIZE${NC}"
    fi
    
    echo ""
    echo -e "${YELLOW}运行命令:${NC}"
    echo -e "${BLUE}java -jar $JAR_FILE${NC}"
    echo ""
}

# 主函数
main() {
    echo -e "${BLUE}开始检查环境...${NC}"
    
    # 检查环境
    if ! check_java; then
        exit 1
    fi
    
    if ! check_maven; then
        exit 1
    fi
    
    echo ""
    echo -e "${BLUE}环境检查通过，开始构建...${NC}"
    echo ""
    
    # 清理构建
    clean_build
    
    # 构建JAR
    if build_jar; then
        show_results
        echo -e "${GREEN}🎉 构建完成！${NC}"
    else
        echo -e "${RED}❌ 构建失败！${NC}"
        exit 1
    fi
}

# 脚本参数处理
case "$1" in
    "clean")
        echo -e "${YELLOW}仅执行清理操作...${NC}"
        clean_build
        ;;
    "build")
        echo -e "${YELLOW}仅执行构建操作（跳过清理）...${NC}"
        build_jar && show_results
        ;;
    "help"|"-h"|"--help")
        echo "用法: $0 [选项]"
        echo ""
        echo "选项:"
        echo "  clean    仅清理构建文件"
        echo "  build    仅构建JAR文件（跳过清理）"
        echo "  help     显示此帮助信息"
        echo ""
        echo "默认: 执行完整的清理和构建流程"
        ;;
    "")
        main
        ;;
    *)
        echo -e "${RED}未知选项: $1${NC}"
        echo "使用 '$0 help' 查看帮助信息"
        exit 1
        ;;
esac



